﻿// //  ********************************************************************************
// //  Copyright (C) 2016 Sebastian Kenter. All rights reserved.
// // 
// //  Name    : MultiServerEngine | ServerFramework | IServerApplication.cs
// //  Created : 2016 - 02 - 16 20:53
// //  Modified: 2016 - 02 - 20 12:33
// //  ********************************************************************************

using System.Collections.Generic;
using ExitGames.Logging;
using TypeDefs;

namespace ServerFramework.Interfaces.Application
{
    public interface IServerApplication
    {
        #region Property definitions

        ServerTypes ServerType { get; }
        string ServerName { get; }
        ILogger Logger { get; }

        #endregion

        #region Photon methods

        void Setup();
        void TearDown();
        void OnStopRequested();
        void OnServerConnectionFailed(int errorCode, string errorMessage, object state);

        #endregion

        #region ServerFramework methods

        Dictionary<HandlerTypes, List<OperationCodes>> GetHandledOperations();
        bool GetIsMasterPeer();
        string GetConfiguration();

        #endregion
    }
}
